package cn.edu.ctbu.controller;


import cn.edu.ctbu.service.IUserService;
import cn.edu.ctbu.service.impl.UserDetailsServiceImpl;
import cn.edu.ctbu.service.impl.UserServiceImpl;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
@RequestMapping("user")
public class UserController {

    @Resource
    private UserDetailsServiceImpl userDetailsServiceImpl;

    @Resource
    private IUserService userService;


    @PreAuthorize("hasAnyAuthority('system:manage')")
    @GetMapping("/findAll")
    public Object findAll() {
    /*
     注解权限:
         除了配置类，在SpringSecurity中提供了一些访问控制的注解。这些注解默认都是不可用的，需要开启后使用。
        1. 启动类添加开启注解
            @EnableGlobalMethodSecurity(securedEnabled=true)
        2. @Secured
            该注解是基于角色的权限控制，要求UserDetails中的权限名必须以 ROLE_ 开头。
            @Secured("ROLE_reportform")
            @GetMapping("/reportform/find")
            public String findReportForm() {
                return "查询报表";
            }

        3. @PreAuthorize
            该注解可以在方法执行前判断用户是否具有权限
            @EnableGlobalMethodSecurity(prePostEnabled = true)
            @PreAuthorize("hasAnyAuthority('/reportform/find')")
            @GetMapping("/reportform/find")
            public String findReportForm() {
                return "查询报表";
            }
    * */
        return userService.findAll();
    }

    @GetMapping("/login")
    public Object login(String username, String password) {

        return userService.login(username, password);
    }
}
